package ComoViajo;

import java.util.ArrayList;

/**
 * Es bueno explicar el objetivo de esta interfaz para que aquel que la tenga
 * que implementar no est� perdido
 * @comment Sergio
 *
 */
public interface ModuloExternoMapaDeTransporte {

	/**
	 * Busca todos los transportes que pasen cerca de una direcci�n
	 * @param direccion
	 * @return lista de direcciones
	 */
	public  ArrayList<EstacionInterface> getTransportesCercanos(Direccion direccion);
	
	/**
	 * Nos dice si un colectivo puede combinar con otro
	 * @param colectivo1
	 * @param colectivo2
	 * @return si el colectivo1 combina con el colectivo2
	 */
	public boolean puedeCombinar(Colectivo colectivo1, Colectivo colectivo2);
	
	/**
	 * Nos dice donde combina un colectivo con otro
	 * @param colectivo1
	 * @param colectivo2
	 * @return direccion si el colectivo1 combina con el colectivo2 y null si no combina
	 */
	public Direccion dondeCombina(Colectivo colectivo1, Colectivo colectivo2);
	
	/**
	 * Da la distancia en KM de direccionOrigen a direccioDestino
	 * @param direccionOrigen
	 * @param direccioDestino
	 * @return la distancia en KM de direccionOrigen a direccioDestino 
	 */
	public int getDistancia(Direccion direccionOrigen, Direccion direccioDestino);
	
	/**
	 * Devuelve un recorrido de una linea de colectivos
	 * @param linea de colectivo
	 * @param Direcion origen
	 * @param Direccion destino
	 * @return Coleccion de direcciones por la que pasa el colectivo.
	 */
	public ArrayList <Direccion> getRecorrido (String linea,Direccion origen,Direccion destino);
	
	/**
	 * Pone una linea con un recorrido dentro del hashmap
	 * @param linea de colectivo
	 * @param coleccion de direcciones asociadas al recorrido
	 */
	public void setRecorridoDeLinea (String linea, ArrayList<Direccion> direcciones);
	/**
	 * Devuelva las direcciones que estan congestionadas en base a un recorrido
	 * @param recorrido
	 * @param congestionadas
	 * @return
	 */
	public ArrayList <Direccion> getDireccionesCongestionadas(ArrayList <Direccion> recorrido, ArrayList <Direccion> congestionadas);
}
